// 思路总结：本题就是复习对链表进行操作的复习，主要就是注意节点交换时候的顺序赋值
// 其次就是创建新的节点 dummyHead , 这么做主要就是出现头节点，能让整个链表都统一，能够用while循环统一解决。

var swapPairs = function(head) {
    const dummyHead = new ListNode(0); 
    dummyHead.next = head;
    let temp = dummyHead; // 设立tem 指针
    while (temp.next !== null && temp.next.next !== null) { // 循环条件后面还有俩项数
        // 这里就是针对 temp -> node1 -> node2 ->node3  链表的顺序 换成  temp -> node2 -> node1 -> node3 的操作
        // 重点即使node2.next 要赋值给node1.next  后才能赋值，不然会导致指向.next 丢失。
        const node1 = temp.next;
        const node2 = temp.next.next;
        temp.next = node2;
        node1.next = node2.next;
        node2.next = node1;

        // 结束一次循环 temp指针向前移动俩位(相对于原来的位置移动了俩位)
        temp = node1;
    }
    return dummyHead.next;
};
